package com.company;
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        System.out.println("************************");
        System.out.printf("本代码由“前言刘会海”编写\n");
        System.out.printf("牛顿插值公式代码输入：  0\n");
        System.out.printf("雅克比迭代法代码输入：  1\n");
        System.out.printf("杜利特尔分解法代码输入： 2\n");
        System.out.printf("牛顿迭代法代码输入：    3\n");
        System.out.println("************************");
        Scanner ya = new Scanner(System.in);
        int n = ya.nextInt();
            if(n == 0){
            lglr lg=new lglr();
            lg.star();
                System.out.printf("牛顿插值公式执行完毕,按照书中139页例题进行编写");
        } else if (n == 1) {
         yakebi yk=new yakebi();
         yk.func();
            System.out.printf("雅克比迭代公式执行完毕,按照书中87页例题进行编写");
        }  else if (n == 2){
                dlt dl=new dlt();
                dl.start();
                System.out.printf("杜利特尔分解法公式执行完毕,按照154页例2.5例题进行编写");
            } else if (n == 3){
            System.out.println("开始使用马云了。。。。使用的是牛顿迭代法");
            Scanner st = new Scanner(System.in);
            System.out.println("请输入初始值x0的数值\n");
            double a = st.nextDouble();///x0的值
            double b = Math.pow(a, 4) - 6 * Math.pow(a, 2) + 9;///x0的函数值
            double c = Math.sqrt(3);
            double d, e, f;//d：牛顿迭代公式值，e:原方程的一阶导函数值
            System.out.println("3的开方值为：" + c);
            int i = 0;//迭代次数

            do {
                System.out.println("函数方程值为：" + b);
                e = 4 * Math.pow(a, 3) - 12 * a;//一阶导函数值
                d = a - ( b / e);
                System.out.println("一阶导函数值：" + e + " 牛顿迭代公式值：" + d);
                a = d;
                b = Math.pow(a, 4) - 6 * a * a + 9;//函数值
                f = c - d;
                System.out.println("准确差值为：" + f + "\n");
                i++;
            } while (0.0000005 < Math.abs(f));
            System.out.println("最后迭代x的值为：" + d);
            System.out.println("迭代次数：" + i+"按照课本121页例题进行编写");
        }else {
                System.out.println("输入错误，请重新运行");
            }
    }
}